home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / listings / v_12_09 / saks / genq4.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1994-07-12  |  707 b   |  41 lines

  1. Listing 2 - non-inline member function definitions for a generic queue 
  2. using void * elements and an two-argument iteration function
  3.  
  4. //
  5. // genq4.cpp - generic queue of void *
  6. // with a two-argument iteration function
  7. //
  8.  
  9. #include "genq4.h"
  10.  
  11. void genq::append(void *e)
  12.     {
  13.     cell *p = new cell(e, 0);
  14.     if (first == 0)
  15.         first = p;
  16.     else
  17.         last->next = p;
  18.     last = p;
  19.     }
  20.  
  21. void genq::
  22. apply(void f(void *e, void *a), void *args)
  23.     {
  24.     cell *p;
  25.     for (p = first; p != 0; p = p->next)
  26.         f(p->element, args);
  27.     }
  28.  
  29. int genq::remove(void *&e)
  30.     {
  31.     if (first == 0)
  32.         return 0;
  33.     cell *p = first;
  34.     if ((first = first->next) == 0)
  35.         last = 0;
  36.     e = p->element;
  37.     delete p;
  38.     return 1;
  39.     }
  40.  
  41.